home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 2003 June / macformat-130.iso / mac / Reviewed⁄Demos / Spearhead Demo / demota / pak1.pk3 / anim / reload.scr < prev    next >
Encoding:
Text File  |  2002-10-21  |  8.6 KB  |  389 lines

  1. //====================
  2. //Reload.scr
  3. //====================
  4.  
  5.  
  6. //======================================
  7. //======================================
  8. ReloadInit:
  9.     if (self.reloadinit != 1)
  10.     {
  11.         waitthread ReloadClip
  12.         self.reloadinit = 1
  13.         self.playedreloadanim = 0
  14.         self.playedrechamberanim = 0
  15.         self.needreload = 0
  16.     }
  17.     self.inreload = 0
  18. end
  19.  
  20.  
  21. //======================================
  22. //======================================
  23. ReloadClip:
  24.     switch (self.weapon)
  25.     {
  26.         //********************************************
  27.         //*** ALLIED WEAPONS
  28.         //********************************************
  29.         case "high standard":
  30.             self.maxroundsinclip = 8
  31.             self.roundsinclip = 8
  32.             break
  33.  
  34.         case "colt 45":
  35.             self.maxroundsinclip = 7
  36.             self.roundsinclip = 7
  37.             break
  38.  
  39.         case "m1 garand":
  40.             self.maxroundsinclip = 8
  41.             self.roundsinclip = 8
  42.             break
  43.  
  44.         case "springfield '03 sniper":
  45.             self.maxroundsinclip = 5
  46.             self.roundsinclip = 5
  47.             break
  48.  
  49.         case "thompson":
  50.             self.maxroundsinclip = 30
  51.             self.roundsinclip = 30
  52.             break
  53.  
  54.         case "bar":
  55.             self.maxroundsinclip = 20
  56.             self.roundsinclip = 20
  57.             break
  58.  
  59.         case "bazooka":
  60.             self.maxroundsinclip = 1
  61.             self.roundsinclip = 1
  62.             break
  63.  
  64.  
  65.         //********************************************
  66.         //*** GERMAN WEAPONS
  67.         //********************************************
  68.         case "walter p38":
  69.             self.maxroundsinclip = 8
  70.             self.roundsinclip = 8
  71.             break
  72.  
  73.         case "mauser kar 98k":
  74.             self.maxroundsinclip = 5
  75.             self.roundsinclip = 5
  76.             break
  77.  
  78.         case "mauser kar 98d sniper":
  79.             self.maxroundsinclip = 5
  80.             self.roundsinclip = 5
  81.             break
  82.  
  83.         case "mp40":
  84.             self.maxroundsinclip = 32
  85.             self.roundsinclip = 32
  86.             break
  87.  
  88.         case "stg44":
  89.             self.maxroundsinclip = 30
  90.             self.roundsinclip = 30
  91.             break
  92.  
  93.         case "panzerschrek":
  94.             self.maxroundsinclip = 1
  95.             self.roundsinclip = 1
  96.             break
  97.  
  98.         //********************************************
  99.         //*** SPEARHEAD WEAPONS
  100.         //********************************************
  101.  
  102.         case "enfield":
  103.             self.maxroundsinclip = 10
  104.             self.roundsinclip = 10
  105.             break
  106.  
  107.         case "webley revolver":
  108.             self.maxroundsinclip = 8
  109.             self.roundsinclip = 8
  110.             break
  111.  
  112.         case "sten":
  113.             self.maxroundsinclip = 30
  114.             self.roundsinclip = 30
  115.             break
  116.  
  117.         case "nagant rifle":
  118.             self.maxroundsinclip = 5
  119.             self.roundsinclip = 5
  120.             break
  121.  
  122.         case "svt":
  123.             self.maxroundsinclip = 10
  124.             self.roundsinclip = 10
  125.             break
  126.  
  127.         case "nagant revolver":
  128.             self.maxroundsinclip = 7
  129.             self.roundsinclip = 7
  130.             break
  131.  
  132.         case "ppsh":
  133.             self.maxroundsinclip = 46
  134.             self.roundsinclip = 46
  135.             break
  136.  
  137.         case "g43":
  138.             self.maxroundsinclip = 10
  139.             self.roundsinclip = 10
  140.             break
  141.  
  142.         default:
  143.             println "^~^~^ Reload clip default case for weapon " self.weapon " - weapon type not supported"
  144.             self.maxroundsinclip = 8
  145.             self.roundsinclip = 8
  146.             break
  147.     }
  148. end
  149.  
  150. //======================================
  151. //======================================
  152. //Parameters:
  153. //    upperbodyanimonly    0 = play fullbody on all animation and wait till anim done
  154. //                        1 = play upperbody animation only... no legs... wait 'tll anim done
  155. //                        2 = play upperbody anim on rechamber only (no anim wait)... full body on reload
  156. Reload local.upperbodyanimonly local.norechamberanim local . shootFromCover:
  157.     self.playedreloadanim = 0
  158.     self.playedrechamberanim = 0
  159.     self.inreload = 1
  160.     self.needreload = 0
  161.  
  162.     if (self.reloadinit != 1)
  163.     {
  164.         waitthread ReloadInit
  165.     }
  166.  
  167.     //determine number of shots fired and animnames based on the weapon
  168.     //and play rechamber animation if approriate
  169.     switch (self.weapon)
  170.     {
  171.         case "colt 45":
  172.             local.reloadanimname = "colt45"
  173.             local.roundsfired = 1
  174.             break
  175.  
  176.         case "high standard":
  177.             local.reloadanimname = "highstandard"
  178.             local.roundsfired = 1
  179.             break
  180.  
  181.         case "walter p38":
  182.             local.reloadanimname = "p38"
  183.             local.roundsfired = 1
  184.             break
  185.  
  186.         case "m1 garand":
  187.             local.reloadanimname = "m1garand"
  188.             local.roundsfired = 1
  189.             break
  190.  
  191.         case "springfield '03 sniper":
  192.             local.reloadanimname = "springfield"
  193.             local.roundsfired = 1
  194.             break
  195.  
  196.         case "mauser kar 98k":
  197.         case "mauser kar 98d sniper":
  198.             local.reloadanimname = "kar98"
  199.             local.roundsfired = 1
  200.             break
  201.  
  202.         case "thompson":
  203.             local.reloadanimname = "thompson"
  204.             local.roundsfired = 8 //randomint(2) + 3
  205.             break
  206.  
  207.         case "bar":
  208.             local.reloadanimname = "bar"
  209.             local.roundsfired = 7 //randomint(2) + 3
  210.             break
  211.  
  212.         case "mp40":
  213.             local.reloadanimname = "mp40"
  214.             local.roundsfired = 8 //randomint(2) + 3
  215.             break
  216.  
  217.         case "stg44":
  218.             local.reloadanimname = "mp44"
  219.             local.roundsfired = 8 //randomint(2) + 3
  220.             break
  221.  
  222.         case "bazooka":
  223.             local.reloadanimname = "bazooka"
  224.             local.roundsfired = 1
  225.             break
  226.  
  227.         case "panzerschrek":
  228.             local.reloadanimname = "panzerschreck"
  229.             //local.reloadanimname = "bazooka"
  230.             local.roundsfired = 1
  231.             break
  232.  
  233.         default:
  234. //            println "^~^~^ Reload default case for weapon " self.weapon " - weapon type not supported"
  235.             local.reloadanimname = ""
  236.             local.roundsfired = 1
  237.             break
  238.     }
  239.  
  240.     self.roundsinclip = self.roundsinclip - local.roundsfired;
  241.     if (self.roundsinclip <= 0 && local.reloadanimname != "")
  242.     {
  243.         //println "Player reload animation"
  244.         self.roundsinclip = self.maxroundsinclip
  245.         if (local.upperbodyanimonly == 0 || local.upperbodyanimonly == 2)
  246.         {
  247.             if (self.position == prone || self.position == pronewalk)
  248.             {
  249.                 self setmotionanim (self.weapongroup + "_prone_legs")
  250.             }
  251.             else
  252.             {
  253.                 self setmotionanim (self.weapongroup + "_stand_alert_legs")
  254.             }
  255.         }
  256.  
  257.         self.playedreloadanim = 1
  258.         self.blendtime = 0.2
  259.         if (self.position == prone || self.position == pronewalk)
  260.         {
  261.             self setupperanim (self.weapongroup + "_prone_reload")
  262.         }
  263.         else
  264.         {
  265.             self setupperanim (local.reloadanimname + "_reload")
  266.         }
  267.  
  268.         // set needreload and roundsinclip so when motionblend gets called from run it thinks it needs to reload
  269.         if ( local . shootFromCover )
  270.         {
  271.             if (self.weapongroup != "bazooka")
  272.             {
  273.                 //self . roundsinclip = 0;
  274.                 self setreloadcover 1;
  275.                 self . forceReload = 1;
  276.                 //self . needreload = 1;
  277.             }
  278.         }
  279.         self waittill upperanimdone;
  280.         self.forceReload = 0
  281.     }
  282. //    else
  283. //    {
  284. //        if (self.position != prone && self.position != pronewalk && local.norechamberanim != 1) //no prone re-chamber yet
  285. //        {
  286. //            //play re-chamber animation if appropriate
  287. //            switch (self.weapon)
  288. //            {
  289. //                case "springfield '03 sniper":
  290. //                case "mauser kar 98k":
  291. //                case "mauser kar 98d sniper":
  292. //                    //println "playing re-chamber animation"
  293. //                    if (local.upperbodyanimonly == 0)
  294. //                    {
  295. //                        self setmotionanim (self.weapongroup + "_stand_alert_legs")
  296. //                    }
  297. //                    self.playedrechamberanim = 1
  298. //                    if (local.upperbodyanimonly == 2)
  299. //                    {
  300. //                        self setupperanim (kar98_rechamber)
  301. //                    }
  302. //                    else
  303. //                    {
  304. //                        self.blendtime = 0.2
  305. //                        self setupperanim (kar98_rechamber)
  306. //                        self waittill upperanimdone
  307. //                    }
  308. //                    break
  309. //                default:
  310. //                    break
  311. //            }
  312. //        }
  313. //    }
  314.  
  315.     self.inreload = 0
  316. end
  317.  
  318.  
  319. //======================================
  320. //======================================
  321. CheckForCornerReload:
  322.  
  323.     self.needreload = 0
  324.  
  325.     switch (self.weapon)
  326.     {
  327.         case "colt 45":
  328.             local.roundsfired = 1
  329.             break
  330.         case "high standard":
  331.             local.roundsfired = 1
  332.             break
  333.         case "walter p38":
  334.             local.roundsfired = 1
  335.             break
  336.  
  337.  
  338.         case "m1 garand":
  339.             local.roundsfired = 1
  340.             break
  341.  
  342.         case "springfield '03 sniper":
  343.             local.roundsfired = 1
  344.             break
  345.         case "mauser kar 98k":
  346.         case "mauser kar 98d sniper":
  347.             local.roundsfired = 1
  348.             break
  349.  
  350.         case "thompson":
  351.             local.reloadanimname = "thompson"
  352.             local.roundsfired = 5 //randomint(2) + 3
  353.             break
  354.         case "bar":
  355.             local.reloadanimname = "bar"
  356.             local.roundsfired = 5 //randomint(2) + 3
  357.             break
  358.         case "mp40":
  359.             local.reloadanimname = "mp40"
  360.             local.roundsfired = 5 //randomint(2) + 3
  361.             break
  362.         case "stg44":
  363.             local.reloadanimname = "mp44"
  364.             local.roundsfired = 5 //randomint(2) + 3
  365.             break
  366.  
  367.         case "bazooka":
  368.             local.reloadanimname = "bazooka"
  369.             local.roundsfired = 1
  370.             break
  371.         case "panzerschrek":
  372.             local.reloadanimname = "panzerschreck"
  373.             //local.reloadanimname = "bazooka"
  374.             local.roundsfired = 1
  375.             break
  376.  
  377.         default:
  378. //            println "^~^~^ Reload::CheckForCornerReload default case for weapon " self.weapon " - weapon type not supported"
  379.             local.roundsfired = 1
  380.             break
  381.     }
  382.  
  383.     self.roundsinclip = self.roundsinclip - local.roundsfired
  384.     if (self.roundsinclip <= 0)
  385.     {
  386.         self.needreload = 1
  387.     }
  388. end
  389.